package Day009_Map_斗地主_冒泡排序.demo01_Map集合;

/*
    public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
    public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除，返回被删除元素的值。
    public V get(Object key) 根据指定的键，在Map集合中获取对应的值。
    public boolean containsKey(Object key) :判断该集合中是否有此键。
    public boolean containsValue(Object Value) :判断该集合中是否有此值。


  **public Set<K> keySet() : 获取Map集合中所有的键，存储到Set集合中。
  **public Collection<V> Values():获取Map集合中所有的值，存储到Collection集合中         (值不一定唯一,不能存到Set集合)

  **public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的  键值对对象  的集合(Set集合)。
        Map.Entry<K,V>: 一中数据类型,表示键值对对象类型
            Entry<K,V> 是Map接口的成员内部接口 (成员内部类)
            Entry<K,V>接口中的方法:
                                K getKay(); 获取键值对对象的键
                                V getValue(); 获取键值对对象的值
        键值对:两个值
        键值对对象:一个值,包装了键值对的一个对象

 */

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Map常用方法 {
    public static void main(String[] args) {
        //创建Map集合
        Map<String,String> map = new HashMap<>(); //多态

        //1.put(K key, V value): 把指定的键与指定的值添加到Map集合中,返回值是 被覆盖值
        map.put("黄晓明", "杨颖"); // null
        String value1 = map.put("文章", "马伊琍"); // null
        String value2 = map.put("文章", "姚笛"); // 马伊琍
        map.put("谢霆锋", "王菲"); // null

        System.out.println(map); // {文章=姚笛, 谢霆锋=王菲, 黄晓明=杨颖}   HashMap集合存取无序

        //2.size()
        System.out.println(map.size()); // 3

        //3.remove(): 把指定的键 所对应的键值对元素 在Map集合中删除，返回被删除元素的值
        String value3 = map.remove("文章");
        System.out.println(value3); // 姚笛
        System.out.println(map); // {谢霆锋=王菲, 黄晓明=杨颖}

        //4.get(): 根据指定的键，在Map集合中获取对应的值
        String value4 = map.get("谢霆锋");
        System.out.println(value4); //王菲

        //5.containKey(Object key): 判断该集合中是否有此键
        //  containValue(Object Value): 判断该集合中是否有此值
        boolean b1 = map.containsKey("谢霆锋");
        System.out.println(b1);//true
        boolean b2 = map.containsKey("李亚鹏");
        System.out.println(b2);//false

        boolean b3 = map.containsValue("王菲");
        System.out.println(b3);//true
        boolean b4 = map.containsValue("马伊琍");
        System.out.println(b4);//false
//----------------------------------------------------------------------------
        Map<String,String > map2 = new HashMap<>();

        map2.put("黄晓明", "杨颖");
        map2.put("文章", "马伊琍");
        map2.put("谢霆锋", "王菲");
        map2.put("李亚鹏", "王菲");

        //6.Set<K> keySet() : 获取Map集合中所有的键，存储到Set集合中
        Set<String> keys = map2.keySet();
        System.out.println(keys); //[文章, 谢霆锋, 李亚鹏, 黄晓明]

        //  Collection<V> Values():获取Map集合中所有的值，存储到Collection集合中
        Collection<String> values = map2.values();
        System.out.println(values); //[马伊琍, 王菲, 王菲, 杨颖]

//----------------------------------------------------------------------------
        //7.Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)

        Set<Map.Entry<String, String>> entrySet = map2.entrySet();
        System.out.println(entrySet); //[文章=马伊琍, 谢霆锋=王菲, 李亚鹏=王菲, 黄晓明=杨颖]  四个键值对对象,不是四个键值对
                                      //单列集合!!!
    }
}
